import java.util.Arrays;
class WashMachine {
    //属性、字段、方法变量：定义在方法外部，类的内部
    public String brand;//品牌
    public String type;//型号
    public double weight;//重量
    public double length;//高度
    public double width;//宽度
    public double height;//高度
    public String color;//颜色2

    //成员方法
    public void washClothes() {
        System.out.println("洗衣功能");
    }
    public void dryClothes() {//脱水
        System.out.println("脱水功能");
    }
    public void setTime()  {//定时
        System.out.println("定时功能");
    }
}
class Dog {
    //成员变量、字段、属性
    public String name;
    public String color;
    public int age;
    //成员方法
    public void bark() {
        System.out.println(name + "汪汪汪~");
    }
    public void wag() {
        System.out.println(name + "正在摇尾巴~");
    }
}
public class Test {
    public static void main5(String[] args) {
        //1.引用可以指向一个对象(引用指向引用是一个语病)
        //2.一个引用不能同时指向多个对象
        //3.一个引用指向null证明，这个引用不指向任何对象
    }
    public static void main4(String[] args) {
        //类的实例化：new 实例化对象
        Dog dog = new Dog();
        //通过引用.成员变量赋值进行实例化成员变量
        dog.name = "大黄";
        dog.age  = 2;
        dog.color = "黄色";
        //实例化成员方法 实例化对象可以理解为引用，属性，方法理解为堆上开辟的元素
        dog.bark();
        dog.wag();
        System.out.println();
        Dog dog1 = new Dog();
        dog1.name = "小灰灰";
        dog1.age = 1;
        dog1.color = "灰色";
        dog1.bark();
        dog1.wag();
    }
    public static void main3(String[] args) {
        //类的定义
        //1.一般一个文件只定义一个类
        //2.一个文件只允许只有一个类被public修饰
        //3.被public修饰的类的类名必须与文件名相同
        //4.如果需要修改类名，可以通过 refactor -> rename file进行更改文件名，从而达到修改类名
    }
    public static void main2(String[] args) {
        //不规则数组
        int[][] array = new int[2][];//行不可以省，但列可以省，因为是特殊一维数组，行下标对应的值指向了新的一维数组
        //此时如此定义，大小为null.因为不指向任何对象
//        System.out.println(array[0]);
//        System.out.println(array[1]);
//        System.out.println(array[1].length);//error,空指针异常
        //可以通过new来创建一维数组的对象，当两个一维数组，长度不同时，被称为不规则数组
        array[0] = new int[3];
        array[1] = new int[5];
        System.out.println(array[0].length);
        System.out.println(array[1].length);
    }
    public static void main1(String[] args) {
        //二维数组：特殊的一维数组
        //一个二维数组，实际上是，一个一维数组中，每一个数组值，相当于一个一维数组
        int[][] array1 = new int[][]{{1,2,3},{4,5,6}};
        int[][] array2 = {{1,2,3},{4,5,6}};
        int[][] array3 = new int[2][3];
        //行
        System.out.println(array1.length);//一个二维数组相当于一个一维数组
        //列
        System.out.println(array1[0].length);//一维数组中，值也是一个一维数组，所以为3
        System.out.println(array1[1].length);//同上
        //打印二维数组 for(i)
        for(int i = 0;i < array1.length;i++) {
            for(int j = 0;j < array1[i].length;j++) {
                System.out.print(array1[i][j] + " ");
            }
            System.out.println();
        }
        //for(each)
        for(int[] x : array1) {
            for(int xx : x) {
                System.out.print(xx + " ");
            }
            System.out.println();
        }
        //以字符串形式输出 deepToString
        System.out.println(Arrays.deepToString(array1));
    }
}
